feat: add anonymous Scarf usage telemetry (FB-1354)#59
Conversation
Mintlify docs previewDocs were aggregated into the Firebolt documentation site.
Mintlify may take a few minutes to finish building. This comment updates on each sync while the source PR is open. |
Report one privacy-minimized aggregate event per day from the elected operator leader, with transparent Helm controls and documentation so public adoption is measurable and users can opt out.
c6b6690 to
6c50f3e
Compare
Use the Firebolt-owned gateway for customer-facing operator and default engine images so artifact adoption is measured alongside chart downloads.
There was a problem hiding this comment.
Stale comment
Risk: high. Not approving: Cursor Bugbot skipped with 3 unresolved findings (including high-severity Kind mirror breakage) and Security Agent reported a medium-severity README tracking-pixel issue. fstr and leonard-firebolt are already assigned for follow-up.
Sent by Cursor Approval Agent: Infra Reviewer
Delay the first event by a full interval to preserve the daily guarantee, reuse the standard image parser, mirror the Scarf registry in Kind, and disclose README pixel behavior.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 00df367. Configure here.
When telemetry is disabled, bypass Scarf for the default operator and engine images while preserving every user-supplied image repository.
Keep configuration comments focused on durable behavior rather than internal telemetry rationale.
Packdb docs aggregation ready for reviewDocs were merged to Squash-merge the packdb PR into |



Summary
telemetry.enabled=falsedisable runtime events and switch default operator/engine image pulls to GHCRFireboltEngine, andFireboltEngineClassimage repositoryPrivacy
The event includes operator/engine versions, Kubernetes minor, OS/architecture, and bucketed instance/engine/replica counts. It contains no names, stable identifiers, query data, schemas, secrets, or configuration. The source IP is visible to Scarf for company inference but is not stored.
The README pixel is disclosed separately because it operates independently of runtime settings.
Opt-out behavior
telemetry.enabled=falseprovides one control for runtime telemetry and default image routing. To bypass Scarf for the chart download itself, install fromoci://ghcr.io/firebolt-db/helm-charts; Helm selects the chart URL before reading values.DO_NOT_TRACKandSCARF_NO_ANALYTICSdisable runtime events only.Managed deployment dependency
Firebolt-managed deployments must land their
DO_NOT_TRACK=1follow-up PRs before this chart is released. Managed compute charts already override operator and engine repositories to the internal ECR mirror.Test plan
make testmake lintmake docs-checkmake helm-docshelm lint helm/firebolt-operatortelemetry.enabled=falserenders GHCR repositories and--telemetry=falseNote
Medium Risk
Changes default image/chart pull paths and adds outbound telemetry; misconfiguration could surprise air-gapped installs, though opt-out and GHCR bypass are documented and user image repos are preserved.
Overview
Introduces anonymous Scarf usage telemetry: the elected operator leader runs a new
internal/telemetryreporter that sends at most one aggregate event per day (bucketed instance/engine/replica counts, versions, K8s minor, OS/arch) via--telemetry/--telemetry-endpoint, withDO_NOT_TRACK/SCARF_NO_ANALYTICSrespected through scarf-go.Default distribution shifts to Firebolt’s Scarf gateways: Helm chart and docs use
oci://oci.firebolt.io/..., default operator and embedded engine images useoci.firebolt.io, and README adds Scarf badges plus a disclosed README pixel.telemetry.enabled=false(or--telemetry=false) disables runtime events, passes that flag from the chart, and when the chart’s default operator repo is unchanged, rewrites the operator image to GHCR; the binary callsUseDirectEngineRepository()so the operator’s fallback engine repo becomes GHCR while CR/engine/class image overrides stay intact.Local dev and CI are updated (
make local-deploydisables telemetry, Kind mirrorsoci.firebolt.io). Privacy and opt-out behavior are documented in README, installation, and quickstart.Reviewed by Cursor Bugbot for commit d0fc3b8. Bugbot is set up for automated code reviews on this repo. Configure here.